﻿using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using System.Web.Script.Serialization;
using AppWeb.Componentes.DAReclamos.Model;
using BL = AppWeb.Componentes.BLReclamos;

namespace AppWeb.Componentes.Reclamos.Areas.PuntoVenta.Controllers
{
    public class ReclamoController : Controller
    {
        //
        // GET: /PuntoVenta/Reclamo/

        public ActionResult Index()
        {
            Response.Cache.SetNoStore();
            Response.Cache.SetAllowResponseInBrowserHistory(false);
            if (Session["Usuario"] == null)
            {
                Session.Clear();
                return RedirectToAction("Index", "Home", new { area = "" });
            }
            ViewBag.Tipos = BLReclamos.BLReclamo.ListadoTipos();
            return View();
        }

        public ActionResult ReclamoMantenimiento(int? reclamo_id)
        {
            if (reclamo_id.HasValue)
            {
                var reclamo = BL.BLReclamo.ObtenerReclamo((int)reclamo_id);
                ViewBag.Reclamo = reclamo;
                ViewBag.Cliente = BL.BLReclamo.ObtenerCliente(reclamo.cliente_id);
            }
            ViewBag.Tipos = BL.BLReclamo.ListadoTipos();
            return PartialView();
        }

        public ActionResult EliminarReclamo(int reclamo_id)
        {
            bool exito = false;

            var reclamo = BL.BLReclamo.ObtenerReclamo(reclamo_id);

            reclamo.estado_id = 5;

            reclamo = BL.BLReclamo.Registrar(reclamo);

            if (reclamo != null)
            {
                exito = true;
            }

            var result = new[] { exito.ToString(CultureInfo.InvariantCulture), reclamo.estado_reclamo_nombre };
            return Json(result, JsonRequestBehavior.AllowGet);
        }

        [HttpPost]
        public ActionResult AgregarClienteReclamo(FormCollection form)
        {
            bool exito = false;
            bool exitoC = false;
            bool exitoR = false;
            var punto_ventaid = Convert.ToInt32(form["punto_venta_id"]);
            var cliente = new Cliente()
                              {
                                  id = Convert.ToInt32(form["idC"]),
                                  nombres = form["nombre"],
                                  apellidos = "",
                                  documento_identidad_tipo = 1,
                                  documento_identidad_numero = form["dni"],
                                  telefono = form["telefono"],
                                  celular = form["celular"],
                                  email = form["email"],
                                  direccion = form["direccion"],
                                  distrito = form["distrito"]
                              };

            cliente = BL.BLCliente.Registrar(cliente);

            if (cliente != null)
            {
                exitoC = true;

                var reclamo = new Reclamo()
                                    {
                                        id = Convert.ToInt32(form["idR"]),
                                        analista_id = 1,
                                        cliente_id = cliente.id,
                                        punto_venta_id = punto_ventaid,
                                        tipo_id = Convert.ToInt32(form["tipo_reclamo"]),
                                        fecha_atencion_inicio = Convert.ToDateTime(form["inicio"]),
                                        fecha_atencion_final = Convert.ToDateTime(form["final"]),
                                        fecha_solucion = null,
                                        descripcion = form["descripcion"],
                                        estado_id = 1,
                                        porcentaje_avance = 0,
                                        solucion = "",
                                        administrador_id = 1,
                                    };

                reclamo = BL.BLReclamo.Registrar(reclamo);

                if (reclamo != null)
                {
                    exitoR = true;
                }
            }


            //if (exitoC && exitoR)
            //{
            //return RedirectToAction("Index", "Reclamo", new { area="PuntoVenta", punto_venta_id = punto_ventaid, tipo_id = DBNull.Value, estado_id = DBNull.Value, fecha_atencion_inicio = DBNull.Value });
            //}
            var js = new JavaScriptSerializer();
            return Content(js.Serialize(exitoC && exitoR));
        }

        public ActionResult ReclamoListado(int punto_venta_id, int? tipo_id, int? estado_id, DateTime? fecha_atencion_inicio)
        {
            ViewBag.idPuntoVenta = punto_venta_id;
            ViewBag.ListadoReclamos = BL.BLReclamo.ListadoReclamo(punto_venta_id, tipo_id, estado_id, fecha_atencion_inicio);
            return PartialView();
        }



    }


}
